/**
 * 2016，thor.com，all rights reserved。
 * 
 * Project：		palmmall-spi
 * Filename：	StatementService.java
 * Created：		2016年7月26日
 * Creator：		wolv
 */
package com.thor.palmmall.rest.statement;

import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import com.thor.commons.entity.BeanOperateInfo;
import com.thor.commons.entity.UCN;
import com.thor.commons.exception.ThorServiceException;
import com.thor.palmmall.api.statement.AStatementPayBill;
import com.thor.palmmall.rest.brand.ABizType;

/**
 * @author wolv
 *
 */
@Path("/statement")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface AStatementService {

  @POST
  @Path("/querybycontract")
  AStatement queryByContract(AQueryByContractParam param) throws ThorServiceException;

  @POST
  @Path("/querybystore")
  AStatementQueryResult queryByStore(AQueryByStoreParam param) throws ThorServiceException;

  @GET
  @Path(value = "/bizType")
  List<ABizType> bizType(@QueryParam("onlyUpper") Boolean onlyUpper) throws ThorServiceException;

  @POST
  @Path(value = "/buildings")
  List<UCN> buildings(ABuildingsParam param) throws ThorServiceException;

  @POST
  @Path(value = "/floors")
  List<UCN> floors(AFloorsParam param) throws ThorServiceException;

  @POST
  @Path(value = "/pay")
  public StatementPayResponse pay(AStatementPayParam param,
      @QueryParam("") BeanOperateInfo operInfo) throws Exception;

  @GET
  @Path(value = "/paynotify/{billNumber}")
  public void paynotify(@PathParam("billNumber") String billNumber,
      @QueryParam("state") String state, @QueryParam("") BeanOperateInfo operInfo)
          throws ThorServiceException;

  @GET
  @Path(value = "/getBill/{billNumber}")
  public AStatementPayBill getStatementOrder(@PathParam("billNumber") String billNumber)
      throws ThorServiceException;

  @POST
  @Path("/confirm")
  public void confirmStatementSubjects(List<String> accIds) throws ThorServiceException;

}
